home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib12.dsk / FILL FIGURES.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  65 lines

  1. 1  REM  ***********************
  2. 2  REM  *    FILL FIGURES     *
  3. 3  REM  * BY DICK CORNELIUS   *
  4. 4  REM  * COPYRIGHT (C) 1983  *
  5. 5  REM  * BY MICROSPARC, INC. *
  6. 6  REM  * LINCOLN, MA. 01773  *
  7. 7  REM  ***********************
  8. 160  REM  INITIALIZATION
  9. 170  HOME 
  10. 180  HGR : SCALE= 1: ROT= 0: HCOLOR= 3
  11. 190 MOVEREG =  -2613
  12. 200 HY = 226
  13. 210 CLR = 62450
  14. 220 TABLE = 768: REM  THIS VALUE RELOCATES EVERYTHING
  15. 230 C$ = "GREEN"
  16. 240  REM  POKES
  17. 250 SHAPE = TABLE +4:FILL = TABLE +6
  18. 260  FOR SPOT = (TABLE) TO TABLE +19: READ CODE: POKE SPOT,CODE: NEXT 
  19. 270  DATA  1,0,4,0,4,0,162,4,160,3,32,1,246,169,0,197,234,240,243,96
  20. 280 MSB =  INT(TABLE/256):LSB = TABLE -256 *MSB
  21. 290  POKE 232,LSB: POKE 233,MSB
  22. 300 MSB =  INT(SHAPE/256):LSB = SHAPE -256 *MSB
  23. 310  POKE FILL +1,LSB: POKE FILL +3,MSB
  24. 320  REM  HPLOT BOX
  25. 330  HOME : CALL CLR
  26. 340 X(1) =  RND(1) *100:X(4) =  RND(1) *100
  27. 350 X(2) =  RND(1) *100 +170:X(3) =  RND(1) *100 +170
  28. 360 Y(1) =  RND(1) *70:Y(2) =  RND(1) *70
  29. 370 Y(3) =  RND(1) *70 +90:Y(4) =  RND(1) *70 +90
  30. 380  HPLOT X(1),Y(1) TO X(2),Y(2) TO X(3),Y(3) TO X(4),Y(4) TO X(1),Y(1)
  31. 390  HPLOT X(1) +1,Y(1) TO X(2) +1,Y(2) TO X(3) +1,Y(3) TO X(4) +1,Y(4) TO X(1) +1,Y(1)
  32. 400 X0 = (X(1) +X(2) +X(3) +X(4))/4:Y0 = (Y(1) +Y(2) +Y(3) +Y(4))/4
  33. 410 X0 = 2 *( INT(X0/2))
  34. 420  IF C$ = "GREEN"  OR C$ = "ORANGE"  THEN X0 = X0 +1
  35. 430  REM  FILL
  36. 440 X = X0:INC = 2
  37. 450 Y = Y0
  38. 460  POKE TABLE +4,4: GOSUB 690
  39. 470  IF  ABS(CY -Y) <2  THEN 530
  40. 480 TY = CY
  41. 490  POKE TABLE +4,6: GOSUB 690
  42. 500  IF  ABS(CY -Y) <3  THEN 530
  43. 510 BY = CY:Y = (TY +BY)/2
  44. 520 X = X +INC: IF X <280  AND X >0  THEN 460
  45. 530  IF INC >0  THEN INC =  -INC:X = X0 +INC: GOTO 450
  46. 540  IF  ABS(CY -Y) <3  THEN 560
  47. 550 X = X -1: IF X >0  THEN 490
  48. 560  REM  PREPARE FOR NEXT FIGURE
  49. 570  IF C$ = "GREEN"  THEN C$ = "VIOLET": GOTO 610
  50. 580  IF C$ = "VIOLET"  THEN C$ = "ORANGE": GOTO 610
  51. 590  IF C$ = "ORANGE"  THEN C$ = "BLUE": GOTO 610
  52. 600  IF C$ = "BLUE"  THEN C$ = "GREEN"
  53. 610  HCOLOR= 3: IF C$ = "BLUE"  OR C$ = "ORANGE"  THEN  HCOLOR= 7
  54. 620  FOR PAUSE = 1 TO 100
  55. 630  IF  PEEK( -16384) <127  THEN 670
  56. 640  GET G$
  57. 650  IF G$ = " "  THEN I = 200
  58. 660  IF G$ =  CHR$(27)  THEN  HOME : TEXT : HOME : END 
  59. 670  NEXT 
  60. 680  GOTO 320
  61. 690  REM  SUBROUTINE
  62. 700  DRAW 1 AT X,Y
  63. 710  CALL FILL
  64. 720  CALL MOVEREG:CY =  PEEK(HY)
  65. 730  RETURN